package com.sg.dto.biz.bff.common;


import com.sg.common.dto.PagedDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc BffReportingTaskDto
 * @使用场景
 */
@Data
public class BffReportingTaskDto extends PagedDto implements Serializable {

    /**
     * 任务ID:
     */
    @ApiModelProperty("任务ID")
    private String taskId;

    /**
     * 任务类型:
     */
    @ApiModelProperty("任务类型")
    private String taskType;

    /**
     * 任务编号:
     */
    @ApiModelProperty("任务编号")
    private String taskNumber;

    /**
     * 任务名称:
     */
    @ApiModelProperty("任务名称")
    private String taskName;

    /**
     * 任务状态:
     */
    @ApiModelProperty("任务状态")
    private String taskStatus;

    /**
     * 是否完成:
     */
    @ApiModelProperty("是否完成")
    private String isComplete;

    /**
     * 完成情况:
     */
    @ApiModelProperty("完成情况")
    private String completeStatus;

    /**
     * 是否逾期:
     */
    @ApiModelProperty("是否逾期")
    private String isOverdue;

    /**
     * 内容表类型编码:
     */
    @ApiModelProperty("内容表类型编码")
    private String tableTypeCode;

    /**
     * 内容表主键ID:
     */
    @ApiModelProperty("内容表主键ID")
    private String entityId;

    /**
     * 父内容表类型编码:
     */
    @ApiModelProperty("父内容表类型编码")
    private String parentTableTypeCode;

    /**
     * 父内容表主键ID:
     */
    @ApiModelProperty("父内容表主键ID")
    private String parentEntityId;

    /**
     * 计划开始时间:
     */
    @ApiModelProperty("计划开始时间")
    private Date planStartTime;

    /**
     * 计划结束时间:
     */
    @ApiModelProperty("计划结束时间")
    private Date planEndTime;

    /**
     * 问题数据类型:
     */
    @ApiModelProperty("问题数据类型")
    private String questionDataTypeCode;

    /**
     * 主体生命周期:
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;

    /**
     * 周期名称:
     */
    @ApiModelProperty("周期名称")
    private String cycleStandardName;

    /**
     * 操作时间:
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;

    /**
     * 虚拟组织成员就职记录ID:
     */
    @ApiModelProperty("虚拟组织成员就职记录ID")
    private String virtualOrgInductionRecordId;

    /**
     * 组内职务名称:
     */
    @ApiModelProperty("组内职务名称")
    private String virtualOrganizationPosition;

    /**
     * 真实姓名:
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;

    /**
     * 用户昵称:
     */
    @ApiModelProperty("用户昵称")
    private String nickName;

    /**
     * 真实头像:
     */
    @ApiModelProperty("真实头像")
    private String userFace;
    /**
     * 是否异常任务:
     */
    @ApiModelProperty("是否异常任务")
    private String isRegularTask;
    /**
     * 周期ID:
     */
    @ApiModelProperty("周期ID")
    private String cycleId;
    /**
     * 角色标识:
     */
    @ApiModelProperty("角色标识")
    private String roleCode;
    /**
     * 关联目标内容类型编码 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标
     */
    @ApiModelProperty("关联目标内容类型编码")
    private String targetCycleContentTypeCode;

    /**
     * 关联目标内容ID
     */
    @ApiModelProperty("关联目标内容ID")
    private String targetCycleContentId;

    /**
     * 实际开始时间
     */
    @ApiModelProperty("实际开始时间")
    private Date actualStartTime;

    /**
     * 实际结束时间
     */
    @ApiModelProperty("实际结束时间")
    private Date actualEndTime;

    /**
     * 周期开始时间
     */
    @ApiModelProperty("周期开始时间")
    private Date cycleStartTime;

    /**
     * 周期结束时间
     */
    @ApiModelProperty("周期结束时间")
    private Date cycleEndTime;

    /**
     * 周期类型标识
     */
    @ApiModelProperty("周期类型标识")
    private String cycleTypeCode;

    /**
     * 周期类型实例标识
     */
    @ApiModelProperty("周期类型实例标识")
    private String cycleTypeInstanceCode;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;
    /**
     * 周期类型名称
     */
    @ApiModelProperty("周期类型名称")
    private String cycleTypeName;

    /**
     * 周期类型实例简称
     */
    @ApiModelProperty("周期类型实例简称")
    private String cycleNumberShortName;
    /**
     * 前端偏差语义提示
     */
    @ApiModelProperty("前端偏差语义提示")
    private String deflectionInfo;
    /**
     * 业务应用标识
     */
    @ApiModelProperty("业务应用标识")
    private String bizAppCode;

    /**
     * 业务场景编码
     */
    @ApiModelProperty("业务场景编码")
    private String bizSceneCode;

    /**
     * 冗余最新进度
     */
    @ApiModelProperty("冗余最新进度")
    private Double percentageProgress;
    /**
     * 是否完成填报工作 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否完成填报工作")
    private String isDoneFilleout;

    /**
     * 是否完成评价工作 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否完成评价工作")
    private String isDoneEvaluate;
    /**
     * 主题内容类型编码 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表
     */
    @ApiModelProperty("主题内容类型编码")
    private String themeContentTypeCode;

    /**
     * 主题内容ID
     */
    @ApiModelProperty("主题内容ID")
    private String themeContentId;
    /**
     * 是否展示目标时间偏差软提示
     */
    @ApiModelProperty("是否展示目标时间偏差软提示")
    private String isShowTargetTimeDeviationTips;
    /**
     * 是否计划验收周期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否计划验收周期")
    private String isPlanReceptionCycle;
    /**
     * 是否自动汇报 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否自动汇报")
    private String isAutoReport;
    /**
     * 冗余目标ID
     */
    @ApiModelProperty("冗余目标ID")
    private String targetId;
    /**
     * 内容冗余状态 EDITING:草稿 TOBESIGN:待签收 ONGOING:进行中 FAILED:已失败 OVERDUE:逾期任务 NOT_AT_THE:未开始 UNCOMPLETED:未完成 COMPLETED:已完成 UNREPORTED:待汇报 EVA:评价中 AUDIT:审核中 SUCCESS:已成功 EXPIRED:已逾期 UNLIMITED:不限
     */
    @ApiModelProperty("内容冗余状态")
    private String stateCode;
    /**
     * 虚拟组织成员ID
     */
    @ApiModelProperty("虚拟组织成员ID")
    private String virtualOrgMemberId;

    /**
     * 身份人员ID
     */
    @ApiModelProperty("身份人员ID")
    private String originalRoleMemberId;

    /**
     * 个人账号
     */
    @ApiModelProperty("个人账号")
    private String userId;

    /**
     * 虚拟组织ID
     */
    @ApiModelProperty("虚拟组织ID")
    private String virtualOrgId;

    /**
     * 是否系统任务 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否系统任务")
    private String isSystemTask;

    /**
     * 是否补报 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否补报")
    private String isReplenishReport;

    /**
     * 申请宽限天数
     */
    @ApiModelProperty("申请宽限天数")
    private Long applyDelayDays;

    /**
     * 申请补报宽限天数
     */
    @ApiModelProperty("申请补报宽限天数")
    private Long replenishDelayDays;

    /**
     * 实际宽限天数
     */
    @ApiModelProperty("实际宽限天数")
    private Long actualDelayDays;

    /**
     * 实际宽限时间
     */
    @ApiModelProperty("实际宽限时间")
    private Date actualDelayTime;
    /**
     * 归属对象ID
     */
    @ApiModelProperty("归属对象ID")
    private String coordObjectId;

    /**
     * 虚拟组织下部门ID
     */
    @ApiModelProperty("虚拟组织下部门ID")
    private String deptId;

    /**
     * 部门简称
     */
    @ApiModelProperty("部门简称")
    private String deptShortName;

    /**
     * 负责人就职记录ID
     */
    @ApiModelProperty("负责人就职记录ID")
    private String personLiableInductionRecordId;

    /**
     * 负责人姓名
     */
    @ApiModelProperty("负责人姓名")
    private String personLiableIdCardName;

    /**
     * 负责人昵称
     */
    @ApiModelProperty("负责人昵称")
    private String personLiableNickName;

    /**
     * 主管就职记录ID
     */
    @ApiModelProperty("主管就职记录ID")
    private String directorInductionRecordId;

    /**
     * 主管姓名
     */
    @ApiModelProperty("主管姓名")
    private String directorIdCardName;

    /**
     * 主管昵称
     */
    @ApiModelProperty("主管昵称")
    private String directorNickName;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffReportingTaskDto that = (BffReportingTaskDto) o;
        return taskId == that.taskId && taskType == that.taskType && taskNumber == that.taskNumber && taskName == that.taskName && taskStatus == that.taskStatus && isComplete == that.isComplete && completeStatus == that.completeStatus && isOverdue == that.isOverdue && tableTypeCode == that.tableTypeCode && entityId == that.entityId && parentTableTypeCode == that.parentTableTypeCode && parentEntityId == that.parentEntityId && planStartTime == that.planStartTime && planEndTime == that.planEndTime && questionDataTypeCode == that.questionDataTypeCode && subjectLifeCycle == that.subjectLifeCycle && cycleStandardName == that.cycleStandardName && operateTime == that.operateTime && virtualOrgInductionRecordId == that.virtualOrgInductionRecordId && virtualOrganizationPosition == that.virtualOrganizationPosition && idCardName == that.idCardName && nickName == that.nickName && userFace == that.userFace && isRegularTask == that.isRegularTask && cycleId == that.cycleId && roleCode == that.roleCode && targetCycleContentTypeCode == that.targetCycleContentTypeCode && targetCycleContentId == that.targetCycleContentId && actualStartTime == that.actualStartTime && actualEndTime == that.actualEndTime && cycleStartTime == that.cycleStartTime && cycleEndTime == that.cycleEndTime && cycleTypeCode == that.cycleTypeCode && cycleTypeInstanceCode == that.cycleTypeInstanceCode && createTime == that.createTime && cycleTypeName == that.cycleTypeName && cycleNumberShortName == that.cycleNumberShortName && deflectionInfo == that.deflectionInfo && bizAppCode == that.bizAppCode && bizSceneCode == that.bizSceneCode && percentageProgress == that.percentageProgress && isDoneFilleout == that.isDoneFilleout && isDoneEvaluate == that.isDoneEvaluate && themeContentTypeCode == that.themeContentTypeCode && themeContentId == that.themeContentId && isShowTargetTimeDeviationTips == that.isShowTargetTimeDeviationTips && isPlanReceptionCycle == that.isPlanReceptionCycle && isAutoReport == that.isAutoReport && targetId == that.targetId && stateCode == that.stateCode && virtualOrgMemberId == that.virtualOrgMemberId && originalRoleMemberId == that.originalRoleMemberId && userId == that.userId && virtualOrgId == that.virtualOrgId && isSystemTask == that.isSystemTask && isReplenishReport == that.isReplenishReport && applyDelayDays == that.applyDelayDays && replenishDelayDays == that.replenishDelayDays && actualDelayDays == that.actualDelayDays && actualDelayTime == that.actualDelayTime && coordObjectId == that.coordObjectId && deptId == that.deptId && deptShortName == that.deptShortName && personLiableInductionRecordId == that.personLiableInductionRecordId && personLiableIdCardName == that.personLiableIdCardName && personLiableNickName == that.personLiableNickName && directorInductionRecordId == that.directorInductionRecordId && directorIdCardName == that.directorIdCardName && directorNickName == that.directorNickName;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), taskId, taskType, taskNumber, taskName, taskStatus, isComplete, completeStatus, isOverdue, tableTypeCode, entityId, parentTableTypeCode, parentEntityId, planStartTime, planEndTime, questionDataTypeCode, subjectLifeCycle, cycleStandardName, operateTime, virtualOrgInductionRecordId, virtualOrganizationPosition, idCardName, nickName, userFace, isRegularTask, cycleId, roleCode, targetCycleContentTypeCode, targetCycleContentId, actualStartTime, actualEndTime, cycleStartTime, cycleEndTime, cycleTypeCode, cycleTypeInstanceCode, createTime, cycleTypeName, cycleNumberShortName, deflectionInfo, bizAppCode, bizSceneCode, percentageProgress, isDoneFilleout, isDoneEvaluate, themeContentTypeCode, themeContentId, isShowTargetTimeDeviationTips, isPlanReceptionCycle, isAutoReport, targetId, stateCode, virtualOrgMemberId, originalRoleMemberId, userId, virtualOrgId, isSystemTask, isReplenishReport, applyDelayDays, replenishDelayDays, actualDelayDays, actualDelayTime, coordObjectId, deptId, deptShortName, personLiableInductionRecordId, personLiableIdCardName, personLiableNickName, directorInductionRecordId, directorIdCardName, directorNickName);
    }

}
